package algoritmos2011;

import algoritmos2011.Red.RespuestaAmistad;
import algoritmos2011.Red.RespuestaEvento;

public class Sistema2 {

	//public enum Retorno{OK,ERROR,NO_IMPLEMENTADA};
	enum TipoRet{OK,ERROR,NO_IMPLEMENTADA};

	private Red red;

	public Red getRed(){
		return Red.getInstancia();
	}
	public void setRed(Red r){
		red=r;
	}

	Red crearRed(){
		return Red.getInstancia();
	}
	TipoRet destruirRed(){
		return TipoRet.NO_IMPLEMENTADA; 
	}

	TipoRet registrarUsuario(String usuarioID){
		return this.getRed().getInstancia().registrarUsuario(usuarioID);
	}

	TipoRet eliminarUsuario(String usuarioID){
		return this.getRed().getInstancia().eliminarUsuario(usuarioID);
	}

	TipoRet listarUsuarios(){
		
		return Red.getInstancia().mostrarUSuarios();
	}

	TipoRet solicitarAmistad(String usuarioO, String usuarioD){
		return this.getRed().solicitarAmistad(usuarioO, usuarioD);
	}

	TipoRet responderSolicitudAmistad(String usuarioID, RespuestaAmistad resp){
		return this.getRed().responderSolicitudAmistad(usuarioID, resp);
	}



	TipoRet enviarMensaje(String usuarioO, String usuarioD, String asunto, String mensaje){

		return this.getRed().enviarMensaje(usuarioO, usuarioD, asunto, mensaje);
	}



	TipoRet leerBandejaEntrada (String usuarioID){

		if(Red.getInstancia().existeUsuario(usuarioID, Red.getInstancia().getUsuarios().getRaiz())){
			Usuario usu=Red.getInstancia().buscarUsuario(usuarioID,Red.getInstancia().getUsuarios().getRaiz());
			if (usu.getEstado()==2){
				System.out.println("El usuario" + usuarioID + "no existe");
				return TipoRet.ERROR;
			}
			//if (!usu.getMensajes().esVacia()){
			System.out.println("Mensajes del usuario" + usuarioID);
			System.out.println (usu.getMensajes().mostrarPila());
			return TipoRet.OK;
		}else{
			System.out.println("El usuario"+ usuarioID + "no existe");
			return TipoRet.ERROR;
		}

	}


	TipoRet invitarEvento(String usuarioO, String usuarioD, String nombreEvento, int fechaEvento, int horaEvento){

		return getRed().invitarEvento(usuarioO, usuarioD,nombreEvento,fechaEvento,horaEvento);
	}


	TipoRet responderEvento (String usuarioID, RespuestaEvento resp){
		
		return getRed().responderEvento(usuarioID, resp);
	}

	TipoRet listarEventosPendientes(String usuarioID)
	{
		return getRed().listarEventosPendientes(usuarioID);
	}



}
